home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume13 / kterm / patch2 < prev    next >
Encoding:
Internet Message Format  |  1991-05-30  |  32.4 KB

  1. Path: uunet!uunet!cs.utexas.edu!sun-barr!newstop!exodus!NMSU.Edu!mleisher
  2. From: mleisher@NMSU.Edu
  3. Newsgroups: comp.sources.x
  4. Subject: v13i041: kterm - kanji xterm, Patch2, Part01/01
  5. Message-ID: <14224@exodus.Eng.Sun.COM>
  6. Date: 30 May 91 17:26:06 GMT
  7. References: <csx-13i041:kterm@uunet.UU.NET>
  8. Sender: news@exodus.Eng.Sun.COM
  9. Lines: 890
  10. Approved: argv@sun.com
  11.  
  12. Submitted-by: mleisher@NMSU.Edu
  13. Posting-number: Volume 13, Issue 41
  14. Archive-name: kterm/patch2
  15. Patch-To: kterm: Volume 12, Issue 82-89
  16. Patch-To: kterm: Volume 13, Issue 40 (patch 1 5/25/91)
  17.  
  18. Here is patch 2 for kterm 4.1.2, which brings kterm to patchlevel 8.
  19.  
  20.  
  21. Fixes:
  22.  
  23.   o  Conflict between tab/newline preservation and color
  24.  
  25.   o  Missing "Color[0-7]" resource class names
  26.  
  27.  
  28. Updates:
  29.  
  30.   o  Tab and newline preservation separated so one or both can be used
  31.  
  32.   o  Manual page updated w.r.t. tab/newline preservation
  33.  
  34.   o  Big5->GuoBiao conversion table has a few extra additions
  35.  
  36.  
  37. Thanks go to Martin Walter of Uni Freiburg for help finding the color
  38. problems.
  39.  
  40. ---- Cut Here and feed the following to sh ----
  41. #!/bin/sh
  42. # This is a shell archive (produced by shar 3.49)
  43. # To extract the files from this archive, save it to a file, remove
  44. # everything above the "!/bin/sh" line above, and type "sh file_name".
  45. #
  46. # made 05/29/1991 09:56 UTC by mleisher@NMSU.Edu
  47. # Source directory /tmp_mnt/home/kythera4/src/X11R4/contrib/clients/kterm-4.1.2
  48. #
  49. # existing files will NOT be overwritten unless -c is specified
  50. #
  51. # This shar contains:
  52. # length  mode       name
  53. # ------ ---------- ------------------------------------------
  54. #  28862 -rw-rw-r-- PATCH
  55. #    958 -rw-rw-r-- b2g
  56. #
  57. # ============= PATCH ==============
  58. if test -f 'PATCH' -a X"$1" != X"-c"; then
  59.     echo 'x - skipping PATCH (File already exists)'
  60. else
  61. echo 'x - extracting PATCH (Text)'
  62. sed 's/^X//' << 'SHAR_EOF' > 'PATCH' &&
  63. *** kterm-4.1.2.7/KTerm.ad.ORIG    Sun May 26 21:11:14 1991
  64. --- KTerm.ad    Mon May 27 04:32:57 1991
  65. ***************
  66. *** 35,41 ****
  67. X  *vtMenu*cursesemul*Label:    Enable Curses Emulation
  68. X  *vtMenu*visualbell*Label:    Enable Visual Bell
  69. X  *vtMenu*marginbell*Label:    Enable Margin Bell
  70. ! *vtMenu*tabnlpres*Label:    Enable TAB/NL Preservation
  71. X  *vtMenu*altscreen*Label:    Show Alternate Screen
  72. X  *vtMenu*softreset*Label:    Do Soft Reset
  73. X  *vtMenu*hardreset*Label:    Do Full Reset
  74. --- 35,42 ----
  75. X  *vtMenu*cursesemul*Label:    Enable Curses Emulation
  76. X  *vtMenu*visualbell*Label:    Enable Visual Bell
  77. X  *vtMenu*marginbell*Label:    Enable Margin Bell
  78. ! *vtMenu*tabpres*Label:        Enable TAB Preservation
  79. ! *vtMenu*nlpres*Label:        Enable NL Preservation
  80. X  *vtMenu*altscreen*Label:    Show Alternate Screen
  81. X  *vtMenu*softreset*Label:    Do Soft Reset
  82. X  *vtMenu*hardreset*Label:    Do Full Reset
  83. ***************
  84. *** 159,170 ****
  85. X  *VT100*lineSpace:        0
  86. X  
  87. X  *VT100*Color0:            Black
  88. ! *VT100*Color1:            Blue
  89. ! *VT100*Color2:            Red
  90. ! *VT100*Color3:            Magenta
  91. ! *VT100*Color4:            Green
  92. ! *VT100*Color5:            Cyan
  93. ! *VT100*Color6:            Yellow
  94. X  *VT100*Color7:            White
  95. X  
  96. X  *tekMenu.Label:            Tek Options
  97. --- 160,171 ----
  98. X  *VT100*lineSpace:        0
  99. X  
  100. X  *VT100*Color0:            Black
  101. ! *VT100*Color1:            Red
  102. ! *VT100*Color2:            Green
  103. ! *VT100*Color3:            Yellow
  104. ! *VT100*Color4:            Blue
  105. ! *VT100*Color5:            Magenta
  106. ! *VT100*Color6:            Cyan
  107. X  *VT100*Color7:            White
  108. X  
  109. X  *tekMenu.Label:            Tek Options
  110. *** kterm-4.1.2.7/README.ORIG    Sun May 26 23:10:02 1991
  111. --- README    Sun May 26 23:12:26 1991
  112. ***************
  113. *** 186,193 ****
  114. X  
  115. X    Alton Harkcom (for help updating the Japanese manual page)
  116. X  
  117. X  
  118. !                 Sat May  4 14:11:37 1991
  119. X  
  120. X                  Internet: mleisher@nmsu.edu
  121. X                  Bitnet  : mleisher@nmsu.bitnet
  122. --- 186,196 ----
  123. X  
  124. X    Alton Harkcom (for help updating the Japanese manual page)
  125. X  
  126. +   Peter Wisnovsky of Sharebase
  127. X  
  128. !   Martin Walter from University of Freiburg
  129. !                 Sun May 26 23:09:44 1991
  130. X  
  131. X                  Internet: mleisher@nmsu.edu
  132. X                  Bitnet  : mleisher@nmsu.bitnet
  133. *** kterm-4.1.2.7/button.c.ORIG    Sun May 26 21:39:22 1991
  134. --- button.c    Sun May 26 21:39:54 1991
  135. ***************
  136. *** 1595,1604 ****
  137. X              lp = SaveText(screen, crow, ccol, screen->max_col, lp);
  138. X  
  139. X              /*
  140. !              * Only preserve tabs and newlines if the flag is set, otherwise
  141. !              * act in the normal fashion.
  142. X               */
  143. !             if (screen->tabnlpres != True) {
  144. X  #ifdef KTERM
  145. X          lp->code = '\n';    /* put in newline at end of line */
  146. X          lp++->gset = GSET_ASCII;
  147. --- 1595,1606 ----
  148. X              lp = SaveText(screen, crow, ccol, screen->max_col, lp);
  149. X  
  150. X              /*
  151. !              * Only preserve newlines if the flag is True, otherwise
  152. !              * act in the normal fashion.  Skip adding newlines here
  153. !              * if we want newlines preserved.  They will be handled
  154. !              * in the SaveText routine.
  155. X               */
  156. !             if (screen->nlpres != True) {
  157. X  #ifdef KTERM
  158. X          lp->code = '\n';    /* put in newline at end of line */
  159. X          lp++->gset = GSET_ASCII;
  160. ***************
  161. *** 1611,1620 ****
  162. X                  lp = SaveText(screen, i, 0, screen->max_col, lp);
  163. X  
  164. X                  /*
  165. !                  * Only preserve tabs and newlines if the flag is set,
  166. !                  * otherwise act in the normal fashion.
  167. X                   */
  168. !                 if (screen->tabnlpres != True) {
  169. X  #ifdef KTERM
  170. X                      lp->code = '\n';
  171. X                      lp++->gset = GSET_ASCII;
  172. --- 1613,1624 ----
  173. X                  lp = SaveText(screen, i, 0, screen->max_col, lp);
  174. X  
  175. X                  /*
  176. !                  * Only preserve newlines if the flag is True, otherwise
  177. !                  * act in the normal fashion.  Skip adding newlines here
  178. !                  * if we want newlines preserved.  They will be handled
  179. !                  * in the SaveText routine.
  180. X                   */
  181. !                 if (screen->nlpres != True) {
  182. X  #ifdef KTERM
  183. X                      lp->code = '\n';
  184. X                      lp++->gset = GSET_ASCII;
  185. ***************
  186. *** 1978,1984 ****
  187. X  #ifdef KTERM
  188. X      register Bchr *ch = screen->buf[row + screen->topline];
  189. X      register Char g;
  190. !         register int tabnlpres = screen->tabnlpres;
  191. X  # ifdef KTERM_HANZI
  192. X          /*
  193. X           * Need to check to see if a Big5 font is in use also.
  194. --- 1982,1989 ----
  195. X  #ifdef KTERM
  196. X      register Bchr *ch = screen->buf[row + screen->topline];
  197. X      register Char g;
  198. !         register int tabpres = screen->tabpres;
  199. !         register int nlpres = screen->nlpres;
  200. X  # ifdef KTERM_HANZI
  201. X          /*
  202. X           * Need to check to see if a Big5 font is in use also.
  203. ***************
  204. *** 1998,2020 ****
  205. X           * Just hoping that there will always be enough space allocated for
  206. X           * new lines.
  207. X           */
  208. !         if (tabnlpres != False && ch[ecol].attr & NL_TAG)
  209. X            ecol++;
  210. X      for (i = scol; i < ecol; i++) {
  211. X  #ifdef KTERM
  212. X          c = ch[i].code & ~NEEDMAP;
  213. X          g = ch[i].gset;
  214. !                 if (tabnlpres != False && ch[i].attr & TAB_TAG) {
  215. X                      lp->code = '\t';
  216. X                      lp->gset = GSET_ASCII;
  217. X              i++;
  218. X                      while(i < ecol && ch[i].code == '\0' &&
  219. !               !(ch[i].attr & (TAB_TAG|NL_TAG)))
  220. X                        i++;
  221. X                      if (i < ecol &&
  222. !             (ch[i].code != '\0' || ch[i].attr & (TAB_TAG|NL_TAG)))
  223. X                        i--;
  224. !                 } else if (tabnlpres != False && ch[i].attr & NL_TAG) {
  225. X                      lp->code = '\n';
  226. X                      lp->gset = GSET_ASCII;
  227. X          } else if (c < ' ' || c == 0x7f && !(g & CS96)) {
  228. --- 2003,2025 ----
  229. X           * Just hoping that there will always be enough space allocated for
  230. X           * new lines.
  231. X           */
  232. !         if (nlpres != False && ch[ecol].attr & NL_TAG)
  233. X            ecol++;
  234. X      for (i = scol; i < ecol; i++) {
  235. X  #ifdef KTERM
  236. X          c = ch[i].code & ~NEEDMAP;
  237. X          g = ch[i].gset;
  238. !                 if (tabpres != False && ch[i].attr & TAB_TAG) {
  239. X                      lp->code = '\t';
  240. X                      lp->gset = GSET_ASCII;
  241. X              i++;
  242. X                      while(i < ecol && ch[i].code == '\0' &&
  243. !               !(ch[i].attr & TAB_TAG))
  244. X                        i++;
  245. X                      if (i < ecol &&
  246. !             (ch[i].code != '\0' || ch[i].attr & TAB_TAG))
  247. X                        i--;
  248. !                 } else if (nlpres != False && ch[i].attr & NL_TAG) {
  249. X                      lp->code = '\n';
  250. X                      lp->gset = GSET_ASCII;
  251. X          } else if (c < ' ' || c == 0x7f && !(g & CS96)) {
  252. *** kterm-4.1.2.7/charproc.c.ORIG    Sun May 26 21:28:19 1991
  253. --- charproc.c    Mon May 27 04:18:20 1991
  254. ***************
  255. *** 119,125 ****
  256. X  #define    XtNlogInhibit        "logInhibit"
  257. X  #define    XtNloginShell        "loginShell"
  258. X  #define    XtNmarginBell        "marginBell"
  259. ! #define XtNtabNlPreserve    "tabNlPreserve"
  260. X  #define    XtNpointerColor        "pointerColor"
  261. X  #define XtNpointerColorBackground "pointerColorBackground"
  262. X  #define    XtNpointerShape        "pointerShape"
  263. --- 119,126 ----
  264. X  #define    XtNlogInhibit        "logInhibit"
  265. X  #define    XtNloginShell        "loginShell"
  266. X  #define    XtNmarginBell        "marginBell"
  267. ! #define XtNtabPreserve        "tabPreserve"
  268. ! #define XtNnlPreserve        "nlPreserve"
  269. X  #define    XtNpointerColor        "pointerColor"
  270. X  #define XtNpointerColorBackground "pointerColorBackground"
  271. X  #define    XtNpointerShape        "pointerShape"
  272. ***************
  273. *** 175,180 ****
  274. --- 176,191 ----
  275. X  #define    XtCC132            "C132"
  276. X  #define XtCCharClass        "CharClass"
  277. X  #define    XtCCurses        "Curses"
  278. + #ifdef    COLOR_TEXT    /* mukawa */
  279. + #define    XtCColor0        "Color0"
  280. + #define    XtCColor1        "Color1"
  281. + #define    XtCColor2        "Color2"
  282. + #define    XtCColor3        "Color3"
  283. + #define    XtCColor4        "Color4"
  284. + #define    XtCColor5        "Color5"
  285. + #define    XtCColor6        "Color6"
  286. + #define    XtCColor7        "Color7"
  287. + #endif    /* COLOR_TEXT */
  288. X  #define XtCCutNewline        "CutNewline"
  289. X  #define XtCCutToBeginningOfLine    "CutToBeginningOfLine"
  290. X  #define XtCEightBitInput    "EightBitInput"
  291. ***************
  292. *** 184,190 ****
  293. X  #define    XtCLogging        "Logging"
  294. X  #define    XtCLogInhibit        "LogInhibit"
  295. X  #define    XtCLoginShell        "LoginShell"
  296. ! #define XtCTabNlPreserve    "TabNlPreserve"
  297. X  #define    XtCMarginBell        "MarginBell"
  298. X  #define XtCMultiClickTime    "MultiClickTime"
  299. X  #define    XtCMultiScroll        "MultiScroll"
  300. --- 195,202 ----
  301. X  #define    XtCLogging        "Logging"
  302. X  #define    XtCLogInhibit        "LogInhibit"
  303. X  #define    XtCLoginShell        "LoginShell"
  304. ! #define XtCTabPreserve        "TabPreserve"
  305. ! #define XtCNlPreserve        "NlPreserve"
  306. X  #define    XtCMarginBell        "MarginBell"
  307. X  #define XtCMultiClickTime    "MultiClickTime"
  308. X  #define    XtCMultiScroll        "MultiScroll"
  309. ***************
  310. *** 398,404 ****
  311. X      { "set-allow132",        HandleAllow132 },
  312. X      { "set-cursesemul",        HandleCursesEmul },
  313. X      { "set-marginbell",        HandleMarginBell },
  314. !     { "set-tabnlpres",        HandleTabNlPreserve },
  315. X      { "set-altscreen",        HandleAltScreen },
  316. X      { "soft-reset",        HandleSoftReset },
  317. X      { "hard-reset",        HandleHardReset },
  318. --- 410,417 ----
  319. X      { "set-allow132",        HandleAllow132 },
  320. X      { "set-cursesemul",        HandleCursesEmul },
  321. X      { "set-marginbell",        HandleMarginBell },
  322. !     { "set-tabpres",        HandleTabPreserve },
  323. !     { "set-nlpres",        HandleNLPreserve },
  324. X      { "set-altscreen",        HandleAltScreen },
  325. X      { "soft-reset",        HandleSoftReset },
  326. X      { "hard-reset",        HandleHardReset },
  327. ***************
  328. *** 465,471 ****
  329. X   * The following two resources need to be set in the default app
  330. X   * resources file or the users app resources file.  They are
  331. X   * directory and filename info on the Big5 <-> GuoBiao conversion
  332. !  * tables
  333. X   */
  334. X  {XtNhanziGbToBigTable, XtCHanziGbToBigTable, XtRString, sizeof(char *),
  335. X     XtOffset(XtermWidget, misc.hz_gb2big_tbl), XtRString,
  336. --- 478,484 ----
  337. X   * The following two resources need to be set in the default app
  338. X   * resources file or the users app resources file.  They are
  339. X   * directory and filename info on the Big5 <-> GuoBiao conversion
  340. !  * tables.
  341. X   */
  342. X  {XtNhanziGbToBigTable, XtCHanziGbToBigTable, XtRString, sizeof(char *),
  343. X     XtOffset(XtermWidget, misc.hz_gb2big_tbl), XtRString,
  344. ***************
  345. *** 484,489 ****
  346. --- 497,508 ----
  347. X  {XtNhangulMode, XtCHangulMode, XtRString, sizeof(char *),
  348. X      XtOffset(XtermWidget, misc.hg_m), XtRString,
  349. X      (caddr_t) NULL},
  350. + /*
  351. +  * The following resource needs to be set in the default app
  352. +  * resources file or the users app resources file.  It is
  353. +  * directory and filename info on the N-byte <-> KS conversion
  354. +  * table.
  355. +  */
  356. X  {XtNhangulNtoKSTable, XtCHangulNtoKSTable, XtRString, sizeof(char *),
  357. X     XtOffset(XtermWidget, misc.hg_n2ks_tbl), XtRString,
  358. X     (caddr_t) NULL},
  359. ***************
  360. *** 524,551 ****
  361. X      XtOffset(XtermWidget, screen.cursorcolor),
  362. X      XtRString, "XtDefaultForeground"},
  363. X  #ifdef    COLOR_TEXT    /* mukawa */
  364. ! {XtNcolor0, XtCForeground, XtRPixel, sizeof(Pixel),
  365. X      XtOffset(XtermWidget, screen.textcolor[0]),
  366. X      XtRString, "XtDefaultForeground"},
  367. ! {XtNcolor1, XtCForeground, XtRPixel, sizeof(Pixel),
  368. X      XtOffset(XtermWidget, screen.textcolor[1]),
  369. X      XtRString, "XtDefaultForeground"},
  370. ! {XtNcolor2, XtCForeground, XtRPixel, sizeof(Pixel),
  371. X      XtOffset(XtermWidget, screen.textcolor[2]),
  372. X      XtRString, "XtDefaultForeground"},
  373. ! {XtNcolor3, XtCForeground, XtRPixel, sizeof(Pixel),
  374. X      XtOffset(XtermWidget, screen.textcolor[3]),
  375. X      XtRString, "XtDefaultForeground"},
  376. ! {XtNcolor4, XtCForeground, XtRPixel, sizeof(Pixel),
  377. X      XtOffset(XtermWidget, screen.textcolor[4]),
  378. X      XtRString, "XtDefaultForeground"},
  379. ! {XtNcolor5, XtCForeground, XtRPixel, sizeof(Pixel),
  380. X      XtOffset(XtermWidget, screen.textcolor[5]),
  381. X      XtRString, "XtDefaultForeground"},
  382. ! {XtNcolor6, XtCForeground, XtRPixel, sizeof(Pixel),
  383. X      XtOffset(XtermWidget, screen.textcolor[6]),
  384. X      XtRString, "XtDefaultForeground"},
  385. ! {XtNcolor7, XtCForeground, XtRPixel, sizeof(Pixel),
  386. X      XtOffset(XtermWidget, screen.textcolor[7]),
  387. X      XtRString, "XtDefaultForeground"},
  388. X  #endif    /* COLOR_TEXT */
  389. --- 543,570 ----
  390. X      XtOffset(XtermWidget, screen.cursorcolor),
  391. X      XtRString, "XtDefaultForeground"},
  392. X  #ifdef    COLOR_TEXT    /* mukawa */
  393. ! {XtNcolor0, XtCColor0, XtRPixel, sizeof(Pixel),
  394. X      XtOffset(XtermWidget, screen.textcolor[0]),
  395. X      XtRString, "XtDefaultForeground"},
  396. ! {XtNcolor1, XtCColor1, XtRPixel, sizeof(Pixel),
  397. X      XtOffset(XtermWidget, screen.textcolor[1]),
  398. X      XtRString, "XtDefaultForeground"},
  399. ! {XtNcolor2, XtCColor2, XtRPixel, sizeof(Pixel),
  400. X      XtOffset(XtermWidget, screen.textcolor[2]),
  401. X      XtRString, "XtDefaultForeground"},
  402. ! {XtNcolor3, XtCColor3, XtRPixel, sizeof(Pixel),
  403. X      XtOffset(XtermWidget, screen.textcolor[3]),
  404. X      XtRString, "XtDefaultForeground"},
  405. ! {XtNcolor4, XtCColor4, XtRPixel, sizeof(Pixel),
  406. X      XtOffset(XtermWidget, screen.textcolor[4]),
  407. X      XtRString, "XtDefaultForeground"},
  408. ! {XtNcolor5, XtCColor5, XtRPixel, sizeof(Pixel),
  409. X      XtOffset(XtermWidget, screen.textcolor[5]),
  410. X      XtRString, "XtDefaultForeground"},
  411. ! {XtNcolor6, XtCColor6, XtRPixel, sizeof(Pixel),
  412. X      XtOffset(XtermWidget, screen.textcolor[6]),
  413. X      XtRString, "XtDefaultForeground"},
  414. ! {XtNcolor7, XtCColor7, XtRPixel, sizeof(Pixel),
  415. X      XtOffset(XtermWidget, screen.textcolor[7]),
  416. X      XtRString, "XtDefaultForeground"},
  417. X  #endif    /* COLOR_TEXT */
  418. ***************
  419. *** 582,589 ****
  420. X  {XtNmarginBell, XtCMarginBell, XtRBoolean, sizeof(Boolean),
  421. X      XtOffset(XtermWidget, screen.marginbell),
  422. X      XtRBoolean, (caddr_t) &defaultFALSE},
  423. ! {XtNtabNlPreserve, XtCTabNlPreserve, XtRBoolean, sizeof(Boolean),
  424. !     XtOffset(XtermWidget, screen.tabnlpres),
  425. X      XtRBoolean, (caddr_t) &defaultFALSE},
  426. X  {XtNpointerColor, XtCForeground, XtRPixel, sizeof(Pixel),
  427. X      XtOffset(XtermWidget, screen.mousecolor),
  428. --- 601,611 ----
  429. X  {XtNmarginBell, XtCMarginBell, XtRBoolean, sizeof(Boolean),
  430. X      XtOffset(XtermWidget, screen.marginbell),
  431. X      XtRBoolean, (caddr_t) &defaultFALSE},
  432. ! {XtNtabPreserve, XtCTabPreserve, XtRBoolean, sizeof(Boolean),
  433. !     XtOffset(XtermWidget, screen.tabpres),
  434. !     XtRBoolean, (caddr_t) &defaultFALSE},
  435. ! {XtNnlPreserve, XtCNlPreserve, XtRBoolean, sizeof(Boolean),
  436. !     XtOffset(XtermWidget, screen.nlpres),
  437. X      XtRBoolean, (caddr_t) &defaultFALSE},
  438. X  {XtNpointerColor, XtCForeground, XtRPixel, sizeof(Pixel),
  439. X      XtOffset(XtermWidget, screen.mousecolor),
  440. ***************
  441. *** 3469,3475 ****
  442. X     new->screen.jumpscroll = request->screen.jumpscroll;
  443. X     new->screen.logfile = request->screen.logfile;
  444. X     new->screen.marginbell = request->screen.marginbell;
  445. !    new->screen.tabnlpres = request->screen.tabnlpres;
  446. X     new->screen.mousecolor = request->screen.mousecolor;
  447. X     new->screen.mousecolorback = request->screen.mousecolorback;
  448. X     new->screen.multiscroll = request->screen.multiscroll;
  449. --- 3491,3498 ----
  450. X     new->screen.jumpscroll = request->screen.jumpscroll;
  451. X     new->screen.logfile = request->screen.logfile;
  452. X     new->screen.marginbell = request->screen.marginbell;
  453. !    new->screen.tabpres = request->screen.tabpres;
  454. !    new->screen.nlpres = request->screen.nlpres;
  455. X     new->screen.mousecolor = request->screen.mousecolor;
  456. X     new->screen.mousecolorback = request->screen.mousecolorback;
  457. X     new->screen.multiscroll = request->screen.multiscroll;
  458. *** kterm-4.1.2.7/kterm.man.ORIG    Sun May 26 22:49:40 1991
  459. --- kterm.man    Sun May 26 22:54:01 1991
  460. ***************
  461. *** 100,105 ****
  462. --- 100,121 ----
  463. X  This option indicates that \fIkterm\fP should connect to the X server
  464. X  without KEEPALIVE socket option.
  465. X  .TP 8
  466. + .BI \-np
  467. + This option indicates that \fIkterm\fP should preserve newlines (^J)
  468. + in selections.
  469. + .TP 8
  470. + .BI \+np
  471. + This option indicates that \fIkterm\fP should not preserve newlines (^J)
  472. + in selections.
  473. + .TP 8
  474. + .BI \-tp
  475. + This option indicates that \fIkterm\fP should preserve tabs (^I)
  476. + in selections.
  477. + .TP 8
  478. + .BI \+tp
  479. + This option indicates that \fIkterm\fP should not preserve tabs (^I)
  480. + in selections.
  481. + .TP 8
  482. X  .BI \-lang " language"
  483. X  This option sets the language of the text being displayed.
  484. X  .br
  485. *** kterm-4.1.2.7/main.c.ORIG    Sun May 26 21:10:37 1991
  486. --- main.c    Sun May 26 21:13:25 1991
  487. ***************
  488. *** 467,472 ****
  489. --- 467,474 ----
  490. X  {"-mc",        "*multiClickTime", XrmoptionSepArg,    (caddr_t) NULL},
  491. X  {"-ms",        "*pointerColor",XrmoptionSepArg,    (caddr_t) NULL},
  492. X  {"-nb",        "*nMarginBell",    XrmoptionSepArg,    (caddr_t) NULL},
  493. + {"-np",        "*nlPreserve",    XrmoptionNoArg,        (caddr_t) "on"},
  494. + {"+np",        "*nlPreserve",    XrmoptionNoArg,        (caddr_t) "off"},
  495. X  {"-rw",        "*reverseWrap",    XrmoptionNoArg,        (caddr_t) "on"},
  496. X  {"+rw",        "*reverseWrap",    XrmoptionNoArg,        (caddr_t) "off"},
  497. X  {"-s",        "*multiScroll",    XrmoptionNoArg,        (caddr_t) "on"},
  498. ***************
  499. *** 490,497 ****
  500. X  {"+t",        "*tekStartup",    XrmoptionNoArg,        (caddr_t) "off"},
  501. X  {"-tm",        "*ttyModes",    XrmoptionSepArg,    (caddr_t) NULL},
  502. X  {"-tn",        "*termName",    XrmoptionSepArg,    (caddr_t) NULL},
  503. ! {"-tnp",    "*tabNlPreserve", XrmoptionNoArg,    (caddr_t) "on"},
  504. ! {"+tnp",    "*tabNlPreserve", XrmoptionNoArg,    (caddr_t) "off"},
  505. X  {"-ut",        "*utmpInhibit",    XrmoptionNoArg,        (caddr_t) "on"},
  506. X  {"+ut",        "*utmpInhibit",    XrmoptionNoArg,        (caddr_t) "off"},
  507. X  {"-vb",        "*visualBell",    XrmoptionNoArg,        (caddr_t) "on"},
  508. --- 492,499 ----
  509. X  {"+t",        "*tekStartup",    XrmoptionNoArg,        (caddr_t) "off"},
  510. X  {"-tm",        "*ttyModes",    XrmoptionSepArg,    (caddr_t) NULL},
  511. X  {"-tn",        "*termName",    XrmoptionSepArg,    (caddr_t) NULL},
  512. ! {"-tp",        "*tabPreserve",    XrmoptionNoArg,        (caddr_t) "on"},
  513. ! {"+tp",        "*tabPreserve",    XrmoptionNoArg,        (caddr_t) "off"},
  514. X  {"-ut",        "*utmpInhibit",    XrmoptionNoArg,        (caddr_t) "on"},
  515. X  {"+ut",        "*utmpInhibit",    XrmoptionNoArg,        (caddr_t) "off"},
  516. X  {"-vb",        "*visualBell",    XrmoptionNoArg,        (caddr_t) "on"},
  517. *** kterm-4.1.2.7/menu.c.ORIG    Sun May 26 21:17:39 1991
  518. --- menu.c    Sun May 26 21:50:20 1991
  519. ***************
  520. *** 31,37 ****
  521. X    do_reversevideo(), do_autowrap(), do_reversewrap(), do_autolinefeed(),
  522. X    do_appcursor(), do_appkeypad(), do_scrollkey(), do_scrollttyoutput(),
  523. X    do_allow132(), do_cursesemul(), do_marginbell(), do_tekshow(),
  524. !   do_tabnlpres(),
  525. X    do_altscreen(), do_softreset(), do_hardreset(), do_tekmode(), do_vthide(), 
  526. X    do_tektextlarge(), do_tektext2(), do_tektext3(), do_tektextsmall(), 
  527. X    do_tekpage(), do_tekreset(), do_tekcopy(), do_vtshow(), do_vtmode(), 
  528. --- 31,37 ----
  529. X    do_reversevideo(), do_autowrap(), do_reversewrap(), do_autolinefeed(),
  530. X    do_appcursor(), do_appkeypad(), do_scrollkey(), do_scrollttyoutput(),
  531. X    do_allow132(), do_cursesemul(), do_marginbell(), do_tekshow(),
  532. !   do_tabpres(), do_nlpres(),
  533. X    do_altscreen(), do_softreset(), do_hardreset(), do_tekmode(), do_vthide(), 
  534. X    do_tektextlarge(), do_tektext2(), do_tektext3(), do_tektextsmall(), 
  535. X    do_tekpage(), do_tekreset(), do_tekcopy(), do_vtshow(), do_vtmode(), 
  536. ***************
  537. *** 86,102 ****
  538. X      { "cursesemul",    do_cursesemul, NULL },        /* 11 */
  539. X      { "visualbell",    do_visualbell, NULL },        /* 12 */
  540. X      { "marginbell",    do_marginbell, NULL },        /* 13 */
  541. !     { "tabnlpres",    do_tabnlpres, NULL },        /* 14 */
  542. !     { "altscreen",    do_altscreen, NULL },        /* 15 */
  543. !     { "line1",        NULL, NULL },            /* 16 */
  544. !     { "softreset",    do_softreset, NULL },        /* 17 */
  545. !     { "hardreset",    do_hardreset, NULL },        /* 18 */
  546. !     { "line2",        NULL, NULL },            /* 19 */
  547. !     { "tekshow",    do_tekshow, NULL },        /* 20 */
  548. !     { "tekmode",    do_tekmode, NULL },        /* 21 */
  549. X  #if defined(STATUSLINE) || defined(KTERM_KANJI)
  550. !     { "vthide",        do_vthide, NULL },        /* 22 */
  551. !     { "line3",        NULL, NULL },            /* 23 */
  552. X  #ifdef STATUSLINE
  553. X      { "statusline",    do_statusline, NULL },
  554. X      { "reversestatus",    do_reversestatus, NULL },
  555. --- 86,103 ----
  556. X      { "cursesemul",    do_cursesemul, NULL },        /* 11 */
  557. X      { "visualbell",    do_visualbell, NULL },        /* 12 */
  558. X      { "marginbell",    do_marginbell, NULL },        /* 13 */
  559. !     { "tabpres",    do_tabpres, NULL },        /* 14 */
  560. !     { "nlpres",        do_nlpres, NULL },        /* 15 */
  561. !     { "altscreen",    do_altscreen, NULL },        /* 16 */
  562. !     { "line1",        NULL, NULL },            /* 17 */
  563. !     { "softreset",    do_softreset, NULL },        /* 18 */
  564. !     { "hardreset",    do_hardreset, NULL },        /* 19 */
  565. !     { "line2",        NULL, NULL },            /* 20 */
  566. !     { "tekshow",    do_tekshow, NULL },        /* 21 */
  567. !     { "tekmode",    do_tekmode, NULL },        /* 22 */
  568. X  #if defined(STATUSLINE) || defined(KTERM_KANJI)
  569. !     { "vthide",        do_vthide, NULL },        /* 23 */
  570. !     { "line3",        NULL, NULL },            /* 24 */
  571. X  #ifdef STATUSLINE
  572. X      { "statusline",    do_statusline, NULL },
  573. X      { "reversestatus",    do_reversestatus, NULL },
  574. ***************
  575. *** 223,229 ****
  576. X          update_visualbell();
  577. X  #endif
  578. X          update_marginbell();
  579. !             update_tabnlpres();
  580. X  #ifdef STATUSLINE
  581. X          update_statusline();
  582. X          set_reversestatus_sensitivity();
  583. --- 224,231 ----
  584. X          update_visualbell();
  585. X  #endif
  586. X          update_marginbell();
  587. !             update_tabpres();
  588. !             update_nlpres();
  589. X  #ifdef STATUSLINE
  590. X          update_statusline();
  591. X          set_reversestatus_sensitivity();
  592. ***************
  593. *** 685,700 ****
  594. X      update_marginbell();
  595. X  }
  596. X  
  597. ! static void do_tabnlpres (gw, closure, data)
  598. X       Widget gw;
  599. X       caddr_t closure, data;
  600. X  {
  601. X      register TScreen *screen = &term->screen;
  602. X  
  603. !     screen->tabnlpres = !screen->tabnlpres;
  604. !     update_tabnlpres();
  605. X  }
  606. X  
  607. X  static void handle_tekshow (gw, allowswitch)
  608. X      Widget gw;
  609. X      Bool allowswitch;
  610. --- 687,712 ----
  611. X      update_marginbell();
  612. X  }
  613. X  
  614. ! static void do_tabpres (gw, closure, data)
  615. X       Widget gw;
  616. X       caddr_t closure, data;
  617. X  {
  618. X      register TScreen *screen = &term->screen;
  619. X  
  620. !     screen->tabpres = !screen->tabpres;
  621. !     update_tabpres();
  622. X  }
  623. X  
  624. + static void do_nlpres (gw, closure, data)
  625. +      Widget gw;
  626. +      caddr_t closure, data;
  627. + {
  628. +     register TScreen *screen = &term->screen;
  629. +     screen->nlpres = !screen->nlpres;
  630. +     update_nlpres();
  631. + }
  632. X  static void handle_tekshow (gw, allowswitch)
  633. X      Widget gw;
  634. X      Bool allowswitch;
  635. ***************
  636. *** 1362,1374 ****
  637. X             params, *param_count, w, NULL, NULL);
  638. X  }
  639. X  
  640. ! void HandleTabNlPreserve(w, event, params, param_count)
  641. X      Widget w;
  642. X      XEvent *event;
  643. X      String *params;
  644. X      Cardinal *param_count;
  645. X  {
  646. !     handle_toggle (do_tabnlpres, (int) term->screen.tabnlpres,
  647. X             params, *param_count, w, NULL, NULL);
  648. X  }
  649. X  
  650. --- 1374,1396 ----
  651. X             params, *param_count, w, NULL, NULL);
  652. X  }
  653. X  
  654. ! void HandleTabPreserve(w, event, params, param_count)
  655. !     Widget w;
  656. !     XEvent *event;
  657. !     String *params;
  658. !     Cardinal *param_count;
  659. ! {
  660. !     handle_toggle (do_tabpres, (int) term->screen.tabpres,
  661. !            params, *param_count, w, NULL, NULL);
  662. ! }
  663. ! void HandleNLPreserve(w, event, params, param_count)
  664. X      Widget w;
  665. X      XEvent *event;
  666. X      String *params;
  667. X      Cardinal *param_count;
  668. X  {
  669. !     handle_toggle (do_nlpres, (int) term->screen.nlpres,
  670. X             params, *param_count, w, NULL, NULL);
  671. X  }
  672. X  
  673. *** kterm-4.1.2.7/menu.h.ORIG    Sun May 26 21:13:36 1991
  674. --- menu.h    Sun May 26 21:17:30 1991
  675. ***************
  676. *** 26,32 ****
  677. X    HandleAutoWrap(), HandleReverseWrap(), HandleAutoLineFeed(), 
  678. X    HandleAppCursor(), HandleAppKeypad(), HandleScrollKey(), 
  679. X    HandleScrollTtyOutput(), HandleAllow132(), HandleCursesEmul(), 
  680. !   HandleMarginBell(), HandleTabNlPreserve(), HandleAltScreen(), HandleSoftReset(), 
  681. X    HandleHardReset(), HandleSetTerminalType(), HandleVisibility(), 
  682. X    HandleSetTekText(), HandleTekPage(), HandleTekReset(), HandleTekCopy();
  683. X  #ifdef STATUSLINE
  684. --- 26,33 ----
  685. X    HandleAutoWrap(), HandleReverseWrap(), HandleAutoLineFeed(), 
  686. X    HandleAppCursor(), HandleAppKeypad(), HandleScrollKey(), 
  687. X    HandleScrollTtyOutput(), HandleAllow132(), HandleCursesEmul(), 
  688. !   HandleMarginBell(), HandleTabPreserve(), HandleNLPreserve(),
  689. !   HandleAltScreen(), HandleSoftReset(), 
  690. X    HandleHardReset(), HandleSetTerminalType(), HandleVisibility(), 
  691. X    HandleSetTekText(), HandleTekPage(), HandleTekReset(), HandleTekCopy();
  692. X  #ifdef STATUSLINE
  693. ***************
  694. *** 78,94 ****
  695. X  #define vtMenu_cursesemul 11
  696. X  #define vtMenu_visualbell 12
  697. X  #define vtMenu_marginbell 13
  698. ! #define vtMenu_tabnlpres 14
  699. ! #define vtMenu_altscreen 15
  700. ! #define vtMenu_line1 16
  701. ! #define vtMenu_softreset 17
  702. ! #define vtMenu_hardreset 18
  703. ! #define vtMenu_line2 19
  704. ! #define vtMenu_tekshow 20
  705. ! #define vtMenu_tekmode 21
  706. ! #define vtMenu_vthide 22
  707. X  #if defined(STATUSLINE) || defined(KTERM_KANJI)
  708. ! # define vtMenu_line3 23
  709. X  #endif /* STATUSLINE || KTERM_KANJI */
  710. X  #ifdef STATUSLINE
  711. X  #  define vtMenu_statusline (vtMenu_line3+1)
  712. --- 79,96 ----
  713. X  #define vtMenu_cursesemul 11
  714. X  #define vtMenu_visualbell 12
  715. X  #define vtMenu_marginbell 13
  716. ! #define vtMenu_tabpres 14
  717. ! #define vtMenu_nlpres 15
  718. ! #define vtMenu_altscreen 16
  719. ! #define vtMenu_line1 17
  720. ! #define vtMenu_softreset 18
  721. ! #define vtMenu_hardreset 19
  722. ! #define vtMenu_line2 20
  723. ! #define vtMenu_tekshow 21
  724. ! #define vtMenu_tekmode 22
  725. ! #define vtMenu_vthide 23
  726. X  #if defined(STATUSLINE) || defined(KTERM_KANJI)
  727. ! # define vtMenu_line3 24
  728. X  #endif /* STATUSLINE || KTERM_KANJI */
  729. X  #ifdef STATUSLINE
  730. X  #  define vtMenu_statusline (vtMenu_line3+1)
  731. ***************
  732. *** 261,270 ****
  733. X              vtMenuEntries[vtMenu_marginbell].widget, \
  734. X              term->screen.marginbell)
  735. X  
  736. ! #define update_tabnlpres() \
  737. X    update_menu_item (term->screen.vtMenu, \
  738. !                     vtMenuEntries[vtMenu_tabnlpres].widget, \
  739. !                     term->screen.tabnlpres)
  740. X  
  741. X  #define update_altscreen() \
  742. X    update_menu_item (term->screen.vtMenu, \
  743. --- 263,277 ----
  744. X              vtMenuEntries[vtMenu_marginbell].widget, \
  745. X              term->screen.marginbell)
  746. X  
  747. ! #define update_tabpres() \
  748. X    update_menu_item (term->screen.vtMenu, \
  749. !                     vtMenuEntries[vtMenu_tabpres].widget, \
  750. !                     term->screen.tabpres)
  751. ! #define update_nlpres() \
  752. !   update_menu_item (term->screen.vtMenu, \
  753. !                     vtMenuEntries[vtMenu_nlpres].widget, \
  754. !                     term->screen.nlpres)
  755. X  
  756. X  #define update_altscreen() \
  757. X    update_menu_item (term->screen.vtMenu, \
  758. *** kterm-4.1.2.7/patchlevel.h.ORIG    Sun May 26 23:07:38 1991
  759. --- patchlevel.h    Sun May 26 23:07:50 1991
  760. ***************
  761. *** 1 ****
  762. ! #define patchlevel 7
  763. --- 1 ----
  764. ! #define patchlevel 8
  765. *** kterm-4.1.2.7/ptyx.h.ORIG    Sun May 26 20:06:50 1991
  766. --- ptyx.h    Sun May 26 21:17:08 1991
  767. ***************
  768. *** 390,396 ****
  769. X      Boolean        marginbell;    /* true if margin bell on    */
  770. X      int        nmarginbell;    /* columns from right margin    */
  771. X      int        bellarmed;    /* cursor below bell margin    */
  772. !     Boolean        tabnlpres;    /* true if TAB/NL preserved    */
  773. X      Boolean     multiscroll;    /* true if multi-scroll        */
  774. X      int        scrolls;    /* outstanding scroll count    */
  775. X      SavedCursor    sc;        /* data for restore cursor    */
  776. --- 390,397 ----
  777. X      Boolean        marginbell;    /* true if margin bell on    */
  778. X      int        nmarginbell;    /* columns from right margin    */
  779. X      int        bellarmed;    /* cursor below bell margin    */
  780. !     Boolean        tabpres;    /* true if TAB preserved    */
  781. !     Boolean        nlpres;        /* true if NL preserved    */
  782. X      Boolean     multiscroll;    /* true if multi-scroll        */
  783. X      int        scrolls;    /* outstanding scroll count    */
  784. X      SavedCursor    sc;        /* data for restore cursor    */
  785. ***************
  786. *** 590,610 ****
  787. X  #define INVERSE        0x01    /* invert the characters to be output */
  788. X  #define UNDERLINE    0x02    /* true if underlining */
  789. X  #define BOLD        0x04
  790. ! #define NL_TAG        0x08
  791. ! #define TAB_TAG        0x10
  792. X  #ifdef    COLOR_TEXT    /* mukawa */
  793. X  #define    COLOR_TEXT_MASK        0x78    /* text color RGB attribute. */
  794. X  #define    COLOR_TEXT_MASK2    0xf
  795. X  #define    COLOR_TEXT_SHIFT    3
  796. ! #define COLOR_TEXT_ADJUST    3
  797. ! #define    COLOR_TEXT0        0x18
  798. ! #define    COLOR_TEXT1        0x20
  799. ! #define    COLOR_TEXT2        0x28
  800. ! #define    COLOR_TEXT3        0x30
  801. ! #define    COLOR_TEXT4        0x38
  802. ! #define    COLOR_TEXT5        0x40
  803. ! #define    COLOR_TEXT6        0x48
  804. ! #define    COLOR_TEXT7        0x50
  805. X  #define WRAPAROUND    0x80
  806. X  #define REVERSE_VIDEO    0x100    /* true if screen white on black */
  807. X  #define ORIGIN        0x200    /* true if in origin mode */
  808. --- 591,611 ----
  809. X  #define INVERSE        0x01    /* invert the characters to be output */
  810. X  #define UNDERLINE    0x02    /* true if underlining */
  811. X  #define BOLD        0x04
  812. ! #define NL_TAG        0x10
  813. ! #define TAB_TAG        0x20
  814. X  #ifdef    COLOR_TEXT    /* mukawa */
  815. X  #define    COLOR_TEXT_MASK        0x78    /* text color RGB attribute. */
  816. X  #define    COLOR_TEXT_MASK2    0xf
  817. X  #define    COLOR_TEXT_SHIFT    3
  818. ! #define COLOR_TEXT_ADJUST    8
  819. ! #define    COLOR_TEXT0        0x40
  820. ! #define    COLOR_TEXT1        0x48
  821. ! #define    COLOR_TEXT2        0x50
  822. ! #define    COLOR_TEXT3        0x58
  823. ! #define    COLOR_TEXT4        0x60
  824. ! #define    COLOR_TEXT5        0x68
  825. ! #define    COLOR_TEXT6        0x70
  826. ! #define    COLOR_TEXT7        0x78
  827. X  #define WRAPAROUND    0x80
  828. X  #define REVERSE_VIDEO    0x100    /* true if screen white on black */
  829. X  #define ORIGIN        0x200    /* true if in origin mode */
  830. *** kterm-4.1.2.7/screen.c.ORIG    Sun May 26 20:58:13 1991
  831. --- screen.c    Mon May 27 04:50:10 1991
  832. ***************
  833. *** 1010,1016 ****
  834. X  
  835. X  #ifdef  COLOR_TEXT /* mukawa */
  836. X      if(!cursorstate) {
  837. !         if (color & COLOR_TEXT_MASK) {
  838. X              extern XtermWidget term;
  839. X              XGCValues       xgcv;
  840. X              int             cn;
  841. --- 1010,1017 ----
  842. X  
  843. X  #ifdef  COLOR_TEXT /* mukawa */
  844. X      if(!cursorstate) {
  845. !         if ((color & COLOR_TEXT_MASK) &&
  846. !                     ((color >> COLOR_TEXT_SHIFT) & COLOR_TEXT_ADJUST)) {
  847. X              extern XtermWidget term;
  848. X              XGCValues       xgcv;
  849. X              int             cn;
  850. SHAR_EOF
  851. chmod 0664 PATCH ||
  852. echo 'restore of PATCH failed'
  853. Wc_c="`wc -c < 'PATCH'`"
  854. test 28862 -eq "$Wc_c" ||
  855.     echo 'PATCH: original size 28862, current size' "$Wc_c"
  856. fi
  857. # ============= b2g ==============
  858. if test -f 'b2g' -a X"$1" != X"-c"; then
  859.     echo 'x - skipping b2g (File already exists)'
  860. else
  861. echo 'x - extracting b2g (Text)'
  862. sed 's/^X//' << 'SHAR_EOF' > 'b2g' &&
  863. xbtoa Begin
  864. ,75Y<#t&WMH#dV3BQP@^+>Gl93%QdE3&rNE3B8c9@X0(cF`(h77P5fWARuu2+Auo`CO%%*AT_m'+:9
  865. >#$7/#17kHnp64+&c0f1R,5qt;e$DF/gXJ)A^USFueY+rV(\td$8TqTAtXeDYfXJ)A`XpUr,UV!;4U
  866. VERtU\pmhU\pmhU\pnEU%P,PUSsreUSnNpWMB?crLrnXoqA[bZ_@&coqB*n^S1=ooqAgf\"WI%U%P+
  867. dTs^TeU%P+hTt-liU%P+jTt@#kU%P1ZUT"S-5qtY[+@._K7LGpfU]$mlTsLGqTs(/oTs:AeUS=OAUS
  868. jl^USaaX$DI9hm%LAOn=fBGpS%AUntGKFn"K?HoV(rOp7_/Qoa2$l1c7*45r:GU$HW/Q$:-L-5p/HM
  869. 2aIe\aU/A@1dNuA5r:kb$Fet$$:-L75p/HM5sYk-`X3&=2)[<75rCPX$Iucr$:-O.3$:LE2`M/gW!W
  870. kt2*sSO5rCtp$Hi#K$:-R-0H`Y>2)#B^X9o;#2FTGF5rM.g$FAk%$:-U-7NauU1e%hWn-TLg3'p"U5
  871. r_2!$Gc*;$:.':5p/H]1dMJ[q?dQq6pX3`5t"",$G-'@$:.'H0d&bM688hbjpDG^1.F5G68D"i$J2H
  872. g$:6U.7Nb#T2F\%_U'_5o2+0bR68_.t$J+tZ$:6X;2]tFF68o7ulO!tc2aK;D68q1f$G<DH$:6[?6m
  873. +fT777KjYmLh)5t!UR6:"!t$Fli<$:7*H5p/K]69tsp_[6`;6pijT6:=1!$FmGM$:?O72'>7@68],A
  874. XX9o;%1,^j06S^PS$L@Ts$:?U973FrR6:D6sYR1_)2+0>F6T%7i$I?m&$:?^/0H`_@2)#BMmg9Ch7Pl
  875. eA6Uimd$G#[6$:HX,6QecP2+%_q^Bsr@
  876. xbtoa End N 710 2c6 E 2c S 11068 R d1d867ef
  877. SHAR_EOF
  878. chmod 0664 b2g ||
  879. echo 'restore of b2g failed'
  880. Wc_c="`wc -c < 'b2g'`"
  881. test 958 -eq "$Wc_c" ||
  882.     echo 'b2g: original size 958, current size' "$Wc_c"
  883. fi
  884. exit 0
  885. -----------------------------------------------------------------------------
  886. mleisher@nmsu.edu                      "I laughed.
  887. Mark Leisher                                I cried.
  888. Computing Research Lab                          I fell down.
  889. New Mexico State University                        It changed my life."
  890. Las Cruces, NM                     - Rich [Cowboy Feng's Space Bar and Grille]
  891.  
  892. --
  893. Dan Heller
  894. O'Reilly && Associates       Z-Code Software    Comp-sources-x:
  895. Senior Writer                President          comp-sources-x@uunet.uu.net
  896. argv@ora.com                 argv@zipcode.com
  897.